home *** CD-ROM | disk | FTP | other *** search
/ The Best of MacTutor - S…e Code for Volumes 1 to 5 / The Best of MacTutor - Source Code for Volume 1-5 (Wayzata Technology)(6031)(1990).bin / Source Code / #18 (Mar 87) / Basic Graf3D / Function Demo < prev    next >
Text File  |  1987-02-09  |  2KB  |  94 lines

  1. ' 3D Function Plot
  2. ' ©MacTutor 1987
  3. ' By Dave Kelly
  4. ' Requires CLR Graph3DLib
  5.  
  6. DIM y!(100,100)
  7. ' Be sure to set library volume to your own volume
  8. LIBRARY "XP™ 40-6:Software Dev:MS Basic:CLR Graph3D:Graph3DLib"
  9. LIBRARY "XP™ 40-6:Software Dev:MS Basic:CLR Graph3D:Toolbox"
  10. initialize:
  11. WINDOW 1 'Be sure a window is open!
  12. OpenPort3D  'Set 3D output to window 1
  13. ' Next initialize variables to be used in library calls.
  14. x1!=0:x2!=0:y1!=0:y2!=0:zero!=0
  15. xpt!=0:ypt!=0:zpt!=0:z!=0
  16. xAngle!=0:yAngle!=0:zAngle!=0:Angle!=0
  17. SetRect viewrect1%(1),50,50,250,250  'set the viewport rectangle
  18. ' convert single precision to fixed point values
  19. Fs2Fix -10!,x1!
  20. Fs2Fix -10!,y1!
  21. Fs2Fix 10!,x2!
  22. Fs2Fix 10!,y2!
  23. Fs2Fix 0!,zero!
  24. Fs2Fix 45!,xAngle!
  25. Fs2Fix 45!,yAngle!
  26. Fs2Fix 0!,zAngle!
  27. Fs2Fix 25!,Angle!
  28. viewport viewrect1%(1)
  29. FRAMERECT (VARPTR(viewrect1%(1)))
  30. SetRect viewrect2%(1),275,50,475,250
  31. LookAt x1!,y1!,x2!,y2!
  32. ViewAngle Angle!
  33. roll zAngle!
  34. yaw yAngle!
  35. Pitch xAngle!
  36. GOSUB Drawaxis
  37. GOSUB Drawing1
  38. viewport viewrect2%(1)
  39. FRAMERECT (VARPTR(viewrect2%(1)))
  40. GOSUB Drawaxis
  41. GOSUB Drawing2
  42. WHILE MOUSE(0)<>1:WEND
  43. END
  44. Drawaxis:
  45.     ' Draw x axis
  46.     moveto3d zero!,zero!,zero!
  47.     lineto3d x2!,zero!,zero!
  48.     ' Draw y axis
  49.     moveto3d zero!,zero!,zero!
  50.     lineto3d zero!,x2!,zero!
  51.     ' Draw z axis
  52.     moveto3d zero!,zero!,zero!
  53.     lineto3d zero!,zero!,x2!
  54. RETURN
  55. Drawing1:
  56. Calculate:  ' calulate equation y = SIN(z)
  57.     FOR x!=0 TO 10
  58.         FOR z=0 TO 10
  59.             y!(x,z)=SIN(z)
  60.         NEXT z
  61.     NEXT x
  62. Plot:
  63.     FOR x!=0 TO 10
  64.         Fs2Fix x!,xpt!
  65.             moveto3d xpt!,zero!,zero!
  66.             FOR z!=0 TO 10
  67.                 Fs2Fix y(x,z),ypt!
  68.                 Fs2Fix z!,zpt!
  69.                 lineto3d xpt!,ypt!,zpt!
  70.             NEXT
  71.     NEXT
  72. RETURN
  73. Drawing2:
  74. Calculate:  ' calulate equation y = 9 - (Z^2)
  75.     FOR x!=-5 TO 5
  76.         FOR z=-5 TO 5
  77.             y!(x+5,z+5)=9-(z^2)
  78.         NEXT z
  79.     NEXT x
  80. Plot:
  81.     FOR x!=-5 TO 5
  82.         Fs2Fix x!,xpt!
  83.         Fs2Fix y!(x+5,0),ypt!
  84.         Fs2Fix -5!,zpt!
  85.         moveto3d xpt!,ypt!,zpt!
  86.             FOR z!=-5 TO 5
  87.                 Fs2Fix y(x+5,z+5),ypt!
  88.                 Fs2Fix z!,zpt!
  89.                 lineto3d xpt!,ypt!,zpt!
  90.             NEXT
  91.     NEXT
  92. RETURN
  93.  
  94.